1 module about_arrays; 2 3 import dunit; 4 import helpers; 5 6 class AboutArrays 7 { 8 mixin UnitTest; 9 10 @Test 11 void fixed_length_arrays() { 12 string[4] fruits = ["banana", "mango", "apple", "orange"]; 13 assertEquals(fruits[0], FILL_IN_THIS_STRING); 14 assertEquals(fruits.length, FILL_IN_THIS_NUMBER); 15 int[5] b = 1; // 5 elements with same value 1 16 assertEquals(b, FILL_IN_THIS_ARRAY); 17 } 18 19 @Test 20 void dynamic_length_arrays() { 21 string[] fruits = ["banana", "mango"]; 22 assertEquals(fruits.length, FILL_IN_THIS_NUMBER); 23 fruits ~= "strawberry"; 24 assertEquals(fruits.length, FILL_IN_THIS_NUMBER); 25 assertEquals(fruits[2], FILL_IN_THIS_STRING); 26 } 27 28 29 @Test 30 void array_slicing() { 31 int[] a = [4, 3, 2, 1]; 32 a[0..2] = [1, 2]; 33 assertEquals(a, FILL_IN_THIS_ARRAY); 34 a[0..$] = [0, 0, 0, 0]; // $ is always the last element 35 assertEquals(a, FILL_IN_THIS_ARRAY); 36 } 37 38 @Test 39 void array_append() { 40 int [] a; 41 a.length = 3; // length extended, elements using default value 42 assertEquals(a, FILL_IN_THIS_ARRAY); 43 a ~= [3, 4]; 44 assertEquals(a, FILL_IN_THIS_ARRAY); 45 } 46 47 @Test 48 void slices_of_the_same_array() { 49 int[] items=[1,1,2,3,5,8,13,21,34,55,89,144]; 50 auto slice1=items[2..9]; 51 auto slice2=items[4..7]; 52 assertEquals(slice1[0],FILL_IN_THIS_NUMBER); 53 assertEquals(slice2[0],FILL_IN_THIS_NUMBER); 54 slice1[3]=99; 55 assertEquals(slice2[1],FILL_IN_THIS_NUMBER); 56 slice2.length=2; //truncating a slice... 57 assertEquals(items.length,FILL_IN_THIS_NUMBER); // ... changes original array lenght ? 58 } 59 60 }